<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: IP address handling</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">lwIP
   &#160;<span id="projectnumber">2.1.2</span>
   </div>
   <div id="projectbrief">Lightweight IP stack</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('group__ipaddr.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#groups">Modules</a> &#124;
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">IP address handling<div class="ingroups"><a class="el" href="group__infrastructure.html">Infrastructure</a></div></div>  </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="groups"></a>
Modules</h2></td></tr>
<tr class="memitem:group__ip4addr"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ip4addr.html">IPv4 only</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:group__ip6addr"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ip6addr.html">IPv6 only</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structip__addr.html">ip_addr</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga83b17dbf7d1faf5c8f8c20b039db8bb8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ipaddr.html#ga83b17dbf7d1faf5c8f8c20b039db8bb8">IP_IS_ANY_TYPE_VAL</a>(ipaddr)&#160;&#160;&#160;(IP_GET_TYPE(&amp;ipaddr) == <a class="el" href="group__ipaddr.html#ggaf2142f0dfdcc938e2db16aa745ed585cac6b2c99cf920e08efcb55dc40e42944e">IPADDR_TYPE_ANY</a>)</td></tr>
<tr class="separator:ga83b17dbf7d1faf5c8f8c20b039db8bb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga23b580930c0eb1d0fdeba2b109c077a5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ipaddr.html#ga23b580930c0eb1d0fdeba2b109c077a5">IPADDR_ANY_TYPE_INIT</a>&#160;&#160;&#160;{ { { { 0ul, 0ul, 0ul, 0ul } IPADDR6_ZONE_INIT } }, IPADDR_TYPE_ANY }</td></tr>
<tr class="separator:ga23b580930c0eb1d0fdeba2b109c077a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga77a933975db287f6aa5c2e70249ba18f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ipaddr.html#ga77a933975db287f6aa5c2e70249ba18f">ip_addr_copy</a>(dest,  src)</td></tr>
<tr class="separator:ga77a933975db287f6aa5c2e70249ba18f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga40db7feae2b92f7a7a01d65a85b06e18"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ipaddr.html#ga40db7feae2b92f7a7a01d65a85b06e18">ip_addr_set</a>(dest,  src)</td></tr>
<tr class="separator:ga40db7feae2b92f7a7a01d65a85b06e18"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaea5e4795598bc33fa2db1773c8e6fbac"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ipaddr.html#gaea5e4795598bc33fa2db1773c8e6fbac">ip_addr_set_ipaddr</a>(dest,  src)&#160;&#160;&#160;<a class="el" href="group__ipaddr.html#ga40db7feae2b92f7a7a01d65a85b06e18">ip_addr_set</a>(dest, src)</td></tr>
<tr class="separator:gaea5e4795598bc33fa2db1773c8e6fbac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaae7edb585c062ae03bfbd3af7bf671bc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ipaddr.html#gaae7edb585c062ae03bfbd3af7bf671bc">ip_addr_set_zero</a>(ipaddr)</td></tr>
<tr class="separator:gaae7edb585c062ae03bfbd3af7bf671bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8853fce54b1816dca3af90b48677e673"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ipaddr.html#ga8853fce54b1816dca3af90b48677e673">ip_addr_set_any</a>(is_ipv6,  ipaddr)</td></tr>
<tr class="separator:ga8853fce54b1816dca3af90b48677e673"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga93c7bf3f7487495472aa0f9b5fc25d1a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ipaddr.html#ga93c7bf3f7487495472aa0f9b5fc25d1a">ip_addr_set_any_val</a>(is_ipv6,  ipaddr)</td></tr>
<tr class="separator:ga93c7bf3f7487495472aa0f9b5fc25d1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8f9d56ac85cd87338a1823e4a58ba1da"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ipaddr.html#ga8f9d56ac85cd87338a1823e4a58ba1da">ip_addr_set_loopback</a>(is_ipv6,  ipaddr)</td></tr>
<tr class="separator:ga8f9d56ac85cd87338a1823e4a58ba1da"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac1c5f897bbee217771b1a6ba18733042"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ipaddr.html#gac1c5f897bbee217771b1a6ba18733042">ip_addr_set_loopback_val</a>(is_ipv6,  ipaddr)</td></tr>
<tr class="separator:gac1c5f897bbee217771b1a6ba18733042"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3528798be1d2f1ec6a6bccd35694edce"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ipaddr.html#ga3528798be1d2f1ec6a6bccd35694edce">ip_addr_set_hton</a>(dest,  src)</td></tr>
<tr class="separator:ga3528798be1d2f1ec6a6bccd35694edce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab5c5540ea05227bdd9207a47304bb2c1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ipaddr.html#gab5c5540ea05227bdd9207a47304bb2c1">ip_addr_get_network</a>(target,  host,  netmask)</td></tr>
<tr class="separator:gab5c5540ea05227bdd9207a47304bb2c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3a2123f0bbf6fe843c8542e349c680eb"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ipaddr.html#ga3a2123f0bbf6fe843c8542e349c680eb">ip_addr_netcmp</a>(addr1,  addr2,  mask)</td></tr>
<tr class="separator:ga3a2123f0bbf6fe843c8542e349c680eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga008c9c92d770cc030ea054e6b259835a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ipaddr.html#ga008c9c92d770cc030ea054e6b259835a">ip_addr_cmp</a>(addr1,  addr2)</td></tr>
<tr class="separator:ga008c9c92d770cc030ea054e6b259835a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadb66f6d5fa926ed4b0e69db58dffcbe4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ipaddr.html#gadb66f6d5fa926ed4b0e69db58dffcbe4">ip_addr_cmp_zoneless</a>(addr1,  addr2)</td></tr>
<tr class="separator:gadb66f6d5fa926ed4b0e69db58dffcbe4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga279118890e6a90aa740051fb8b0cc5f4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ipaddr.html#ga279118890e6a90aa740051fb8b0cc5f4">ip_addr_isany</a>(ipaddr)</td></tr>
<tr class="separator:ga279118890e6a90aa740051fb8b0cc5f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacd8f5aa151cff966fd28368b85f38c05"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ipaddr.html#gacd8f5aa151cff966fd28368b85f38c05">ip_addr_isany_val</a>(ipaddr)</td></tr>
<tr class="separator:gacd8f5aa151cff966fd28368b85f38c05"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa3345706e3aa8b32dd630c195b053e75"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ipaddr.html#gaa3345706e3aa8b32dd630c195b053e75">ip_addr_isbroadcast</a>(ipaddr,  <a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:gaa3345706e3aa8b32dd630c195b053e75"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2170d3ee13dd22722222228e7b1c5752"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ipaddr.html#ga2170d3ee13dd22722222228e7b1c5752">ip_addr_ismulticast</a>(ipaddr)</td></tr>
<tr class="separator:ga2170d3ee13dd22722222228e7b1c5752"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0fc8bf6662809274750868683b3a422e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ipaddr.html#ga0fc8bf6662809274750868683b3a422e">ip_addr_isloopback</a>(ipaddr)</td></tr>
<tr class="separator:ga0fc8bf6662809274750868683b3a422e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga33bc079baaf513a9a7381b9531a1f653"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ipaddr.html#ga33bc079baaf513a9a7381b9531a1f653">ip_addr_islinklocal</a>(ipaddr)</td></tr>
<tr class="separator:ga33bc079baaf513a9a7381b9531a1f653"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8619278bcbf705844f584f36972fc758"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ipaddr.html#ga8619278bcbf705844f584f36972fc758">IPADDR_STRLEN_MAX</a>&#160;&#160;&#160;IP6ADDR_STRLEN_MAX</td></tr>
<tr class="separator:ga8619278bcbf705844f584f36972fc758"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae5f26df8f5099f330ad1e506c74f06f7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ipaddr.html#gae5f26df8f5099f330ad1e506c74f06f7">ip4_2_ipv4_mapped_ipv6</a>(ip6addr,  ip4addr)</td></tr>
<tr class="separator:gae5f26df8f5099f330ad1e506c74f06f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga66b5a64b12128e3716bcf04ff91b5a57"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ipaddr.html#ga66b5a64b12128e3716bcf04ff91b5a57">unmap_ipv4_mapped_ipv6</a>(ip4addr,  ip6addr)&#160;&#160;&#160;(ip4addr)-&gt;addr = (ip6addr)-&gt;addr[3];</td></tr>
<tr class="separator:ga66b5a64b12128e3716bcf04ff91b5a57"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabe43b154533b73585c4e58f568370ede"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ipaddr.html#gabe43b154533b73585c4e58f568370ede">IP_ANY_TYPE</a>&#160;&#160;&#160;(&amp;ip_addr_any_type)</td></tr>
<tr class="separator:gabe43b154533b73585c4e58f568370ede"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:ga16ef96d6cde029029bbf47fee35fd67a"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structip__addr.html">ip_addr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ipaddr.html#ga16ef96d6cde029029bbf47fee35fd67a">ip_addr_t</a></td></tr>
<tr class="separator:ga16ef96d6cde029029bbf47fee35fd67a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:gaf2142f0dfdcc938e2db16aa745ed585c"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ipaddr.html#gaf2142f0dfdcc938e2db16aa745ed585c">lwip_ip_addr_type</a> { <a class="el" href="group__ipaddr.html#ggaf2142f0dfdcc938e2db16aa745ed585cace47fa82608deeb1c1c7c2c891eb5049">IPADDR_TYPE_V4</a> = 0U, 
<a class="el" href="group__ipaddr.html#ggaf2142f0dfdcc938e2db16aa745ed585caae510fd8ec7fe405b594b57af61f9a02">IPADDR_TYPE_V6</a> = 6U, 
<a class="el" href="group__ipaddr.html#ggaf2142f0dfdcc938e2db16aa745ed585cac6b2c99cf920e08efcb55dc40e42944e">IPADDR_TYPE_ANY</a> = 46U
 }</td></tr>
<tr class="separator:gaf2142f0dfdcc938e2db16aa745ed585c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gace12d28aef35bb15962e8563aea571b1"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ipaddr.html#gace12d28aef35bb15962e8563aea571b1">ipaddr_ntoa</a> (const <a class="el" href="group__ipaddr.html#ga16ef96d6cde029029bbf47fee35fd67a">ip_addr_t</a> *addr)</td></tr>
<tr class="separator:gace12d28aef35bb15962e8563aea571b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3684dabc0cae597ffb5b51d41f1d886f"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ipaddr.html#ga3684dabc0cae597ffb5b51d41f1d886f">ipaddr_ntoa_r</a> (const <a class="el" href="group__ipaddr.html#ga16ef96d6cde029029bbf47fee35fd67a">ip_addr_t</a> *addr, char *buf, int buflen)</td></tr>
<tr class="separator:ga3684dabc0cae597ffb5b51d41f1d886f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4de70fdd7fd36c5b6eaed8b855d5f151"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ipaddr.html#ga4de70fdd7fd36c5b6eaed8b855d5f151">ipaddr_aton</a> (const char *cp, <a class="el" href="group__ipaddr.html#ga16ef96d6cde029029bbf47fee35fd67a">ip_addr_t</a> *addr)</td></tr>
<tr class="separator:ga4de70fdd7fd36c5b6eaed8b855d5f151"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a id="gae5f26df8f5099f330ad1e506c74f06f7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae5f26df8f5099f330ad1e506c74f06f7">&#9670;&nbsp;</a></span>ip4_2_ipv4_mapped_ipv6</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ip4_2_ipv4_mapped_ipv6</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">ip6addr, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">ip4addr&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">do</span> { \</div><div class="line">  (ip6addr)-&gt;addr[3] = (ip4addr)-&gt;addr; \</div><div class="line">  (ip6addr)-&gt;addr[2] = PP_HTONL(0x0000FFFFUL); \</div><div class="line">  (ip6addr)-&gt;addr[1] = 0; \</div><div class="line">  (ip6addr)-&gt;addr[0] = 0; \</div><div class="line">  ip6_addr_clear_zone(ip6addr); } <span class="keywordflow">while</span>(0);</div></div><!-- fragment -->
</div>
</div>
<a id="ga008c9c92d770cc030ea054e6b259835a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga008c9c92d770cc030ea054e6b259835a">&#9670;&nbsp;</a></span>ip_addr_cmp</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ip_addr_cmp</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">addr1, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">addr2&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">((IP_GET_TYPE(addr1) != IP_GET_TYPE(addr2)) ? 0 : (<a class="code" href="group__ip6addr.html#ga1578e34703e86711a7fb7dcc3857004d">IP_IS_V6_VAL</a>(*(addr1)) ? \</div><div class="line">  ip6_addr_cmp(<a class="code" href="group__ip6addr.html#ga06e75bcd198012b5ba39480c233608bd">ip_2_ip6</a>(addr1), <a class="code" href="group__ip6addr.html#ga06e75bcd198012b5ba39480c233608bd">ip_2_ip6</a>(addr2)) : \</div><div class="line">  ip4_addr_cmp(<a class="code" href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a>(addr1), <a class="code" href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a>(addr2))))</div><div class="ttc" id="group__ip4addr_html_gad7268a496b7e3f872efecd859eba6f03"><div class="ttname"><a href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a></div><div class="ttdeci">#define ip_2_ip4(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:120</div></div>
<div class="ttc" id="group__ip6addr_html_ga06e75bcd198012b5ba39480c233608bd"><div class="ttname"><a href="group__ip6addr.html#ga06e75bcd198012b5ba39480c233608bd">ip_2_ip6</a></div><div class="ttdeci">#define ip_2_ip6(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:116</div></div>
<div class="ttc" id="group__ip6addr_html_ga1578e34703e86711a7fb7dcc3857004d"><div class="ttname"><a href="group__ip6addr.html#ga1578e34703e86711a7fb7dcc3857004d">IP_IS_V6_VAL</a></div><div class="ttdeci">#define IP_IS_V6_VAL(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:98</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="gadb66f6d5fa926ed4b0e69db58dffcbe4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gadb66f6d5fa926ed4b0e69db58dffcbe4">&#9670;&nbsp;</a></span>ip_addr_cmp_zoneless</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ip_addr_cmp_zoneless</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">addr1, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">addr2&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">((IP_GET_TYPE(addr1) != IP_GET_TYPE(addr2)) ? 0 : (<a class="code" href="group__ip6addr.html#ga1578e34703e86711a7fb7dcc3857004d">IP_IS_V6_VAL</a>(*(addr1)) ? \</div><div class="line">  ip6_addr_cmp_zoneless(<a class="code" href="group__ip6addr.html#ga06e75bcd198012b5ba39480c233608bd">ip_2_ip6</a>(addr1), <a class="code" href="group__ip6addr.html#ga06e75bcd198012b5ba39480c233608bd">ip_2_ip6</a>(addr2)) : \</div><div class="line">  ip4_addr_cmp(<a class="code" href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a>(addr1), <a class="code" href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a>(addr2))))</div><div class="ttc" id="group__ip4addr_html_gad7268a496b7e3f872efecd859eba6f03"><div class="ttname"><a href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a></div><div class="ttdeci">#define ip_2_ip4(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:120</div></div>
<div class="ttc" id="group__ip6addr_html_ga06e75bcd198012b5ba39480c233608bd"><div class="ttname"><a href="group__ip6addr.html#ga06e75bcd198012b5ba39480c233608bd">ip_2_ip6</a></div><div class="ttdeci">#define ip_2_ip6(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:116</div></div>
<div class="ttc" id="group__ip6addr_html_ga1578e34703e86711a7fb7dcc3857004d"><div class="ttname"><a href="group__ip6addr.html#ga1578e34703e86711a7fb7dcc3857004d">IP_IS_V6_VAL</a></div><div class="ttdeci">#define IP_IS_V6_VAL(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:98</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ga77a933975db287f6aa5c2e70249ba18f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga77a933975db287f6aa5c2e70249ba18f">&#9670;&nbsp;</a></span>ip_addr_copy</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ip_addr_copy</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">dest, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">src&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">do</span>{ IP_SET_TYPE_VAL(dest, IP_GET_TYPE(&amp;src)); <span class="keywordflow">if</span>(<a class="code" href="group__ip6addr.html#ga1578e34703e86711a7fb7dcc3857004d">IP_IS_V6_VAL</a>(src)){ \</div><div class="line">  ip6_addr_copy(*<a class="code" href="group__ip6addr.html#ga06e75bcd198012b5ba39480c233608bd">ip_2_ip6</a>(&amp;(dest)), *<a class="code" href="group__ip6addr.html#ga06e75bcd198012b5ba39480c233608bd">ip_2_ip6</a>(&amp;(src))); }<span class="keywordflow">else</span>{ \</div><div class="line">  ip4_addr_copy(*<a class="code" href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a>(&amp;(dest)), *<a class="code" href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a>(&amp;(src))); ip_clear_no4(&amp;dest); }}<span class="keywordflow">while</span>(0)</div><div class="ttc" id="group__ip4addr_html_gad7268a496b7e3f872efecd859eba6f03"><div class="ttname"><a href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a></div><div class="ttdeci">#define ip_2_ip4(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:120</div></div>
<div class="ttc" id="group__ip6addr_html_ga06e75bcd198012b5ba39480c233608bd"><div class="ttname"><a href="group__ip6addr.html#ga06e75bcd198012b5ba39480c233608bd">ip_2_ip6</a></div><div class="ttdeci">#define ip_2_ip6(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:116</div></div>
<div class="ttc" id="group__ip6addr_html_ga1578e34703e86711a7fb7dcc3857004d"><div class="ttname"><a href="group__ip6addr.html#ga1578e34703e86711a7fb7dcc3857004d">IP_IS_V6_VAL</a></div><div class="ttdeci">#define IP_IS_V6_VAL(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:98</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="gab5c5540ea05227bdd9207a47304bb2c1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab5c5540ea05227bdd9207a47304bb2c1">&#9670;&nbsp;</a></span>ip_addr_get_network</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ip_addr_get_network</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">target, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">host, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">netmask&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">do</span>{<span class="keywordflow">if</span>(<a class="code" href="group__ip6addr.html#ga9bac7e938757f1d24df2404e8b57cb7d">IP_IS_V6</a>(host)){ \</div><div class="line">  ip4_addr_set_zero(<a class="code" href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a>(target)); IP_SET_TYPE(target, <a class="code" href="group__ipaddr.html#ggaf2142f0dfdcc938e2db16aa745ed585caae510fd8ec7fe405b594b57af61f9a02">IPADDR_TYPE_V6</a>); } <span class="keywordflow">else</span> { \</div><div class="line">  ip4_addr_get_network(<a class="code" href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a>(target), <a class="code" href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a>(host), <a class="code" href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a>(netmask)); IP_SET_TYPE(target, <a class="code" href="group__ipaddr.html#ggaf2142f0dfdcc938e2db16aa745ed585cace47fa82608deeb1c1c7c2c891eb5049">IPADDR_TYPE_V4</a>); }}<span class="keywordflow">while</span>(0)</div><div class="ttc" id="group__ip4addr_html_gad7268a496b7e3f872efecd859eba6f03"><div class="ttname"><a href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a></div><div class="ttdeci">#define ip_2_ip4(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:120</div></div>
<div class="ttc" id="group__ipaddr_html_ggaf2142f0dfdcc938e2db16aa745ed585caae510fd8ec7fe405b594b57af61f9a02"><div class="ttname"><a href="group__ipaddr.html#ggaf2142f0dfdcc938e2db16aa745ed585caae510fd8ec7fe405b594b57af61f9a02">IPADDR_TYPE_V6</a></div><div class="ttdef"><b>Definition:</b> ip_addr.h:58</div></div>
<div class="ttc" id="group__ip6addr_html_ga9bac7e938757f1d24df2404e8b57cb7d"><div class="ttname"><a href="group__ip6addr.html#ga9bac7e938757f1d24df2404e8b57cb7d">IP_IS_V6</a></div><div class="ttdeci">#define IP_IS_V6(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:102</div></div>
<div class="ttc" id="group__ipaddr_html_ggaf2142f0dfdcc938e2db16aa745ed585cace47fa82608deeb1c1c7c2c891eb5049"><div class="ttname"><a href="group__ipaddr.html#ggaf2142f0dfdcc938e2db16aa745ed585cace47fa82608deeb1c1c7c2c891eb5049">IPADDR_TYPE_V4</a></div><div class="ttdef"><b>Definition:</b> ip_addr.h:56</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ga279118890e6a90aa740051fb8b0cc5f4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga279118890e6a90aa740051fb8b0cc5f4">&#9670;&nbsp;</a></span>ip_addr_isany</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ip_addr_isany</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">ipaddr</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">(((ipaddr) == NULL) ? 1 : ((<a class="code" href="group__ip6addr.html#ga9bac7e938757f1d24df2404e8b57cb7d">IP_IS_V6</a>(ipaddr)) ? \</div><div class="line">  ip6_addr_isany(<a class="code" href="group__ip6addr.html#ga06e75bcd198012b5ba39480c233608bd">ip_2_ip6</a>(ipaddr)) : \</div><div class="line">  ip4_addr_isany(<a class="code" href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a>(ipaddr))))</div><div class="ttc" id="group__ip4addr_html_gad7268a496b7e3f872efecd859eba6f03"><div class="ttname"><a href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a></div><div class="ttdeci">#define ip_2_ip4(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:120</div></div>
<div class="ttc" id="group__ip6addr_html_ga9bac7e938757f1d24df2404e8b57cb7d"><div class="ttname"><a href="group__ip6addr.html#ga9bac7e938757f1d24df2404e8b57cb7d">IP_IS_V6</a></div><div class="ttdeci">#define IP_IS_V6(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:102</div></div>
<div class="ttc" id="group__ip6addr_html_ga06e75bcd198012b5ba39480c233608bd"><div class="ttname"><a href="group__ip6addr.html#ga06e75bcd198012b5ba39480c233608bd">ip_2_ip6</a></div><div class="ttdeci">#define ip_2_ip6(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:116</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="gacd8f5aa151cff966fd28368b85f38c05"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gacd8f5aa151cff966fd28368b85f38c05">&#9670;&nbsp;</a></span>ip_addr_isany_val</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ip_addr_isany_val</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">ipaddr</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">((<a class="code" href="group__ip6addr.html#ga1578e34703e86711a7fb7dcc3857004d">IP_IS_V6_VAL</a>(ipaddr)) ? \</div><div class="line">  ip6_addr_isany_val(*<a class="code" href="group__ip6addr.html#ga06e75bcd198012b5ba39480c233608bd">ip_2_ip6</a>(&amp;(ipaddr))) : \</div><div class="line">  ip4_addr_isany_val(*<a class="code" href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a>(&amp;(ipaddr))))</div><div class="ttc" id="group__ip4addr_html_gad7268a496b7e3f872efecd859eba6f03"><div class="ttname"><a href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a></div><div class="ttdeci">#define ip_2_ip4(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:120</div></div>
<div class="ttc" id="group__ip6addr_html_ga06e75bcd198012b5ba39480c233608bd"><div class="ttname"><a href="group__ip6addr.html#ga06e75bcd198012b5ba39480c233608bd">ip_2_ip6</a></div><div class="ttdeci">#define ip_2_ip6(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:116</div></div>
<div class="ttc" id="group__ip6addr_html_ga1578e34703e86711a7fb7dcc3857004d"><div class="ttname"><a href="group__ip6addr.html#ga1578e34703e86711a7fb7dcc3857004d">IP_IS_V6_VAL</a></div><div class="ttdeci">#define IP_IS_V6_VAL(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:98</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="gaa3345706e3aa8b32dd630c195b053e75"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa3345706e3aa8b32dd630c195b053e75">&#9670;&nbsp;</a></span>ip_addr_isbroadcast</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ip_addr_isbroadcast</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">ipaddr, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><a class="el" href="structnetif.html">netif</a>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">((<a class="code" href="group__ip6addr.html#ga9bac7e938757f1d24df2404e8b57cb7d">IP_IS_V6</a>(ipaddr)) ? \</div><div class="line">  0 : \</div><div class="line">  ip4_addr_isbroadcast(<a class="code" href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a>(ipaddr), <a class="code" href="structnetif.html">netif</a>))</div><div class="ttc" id="group__ip4addr_html_gad7268a496b7e3f872efecd859eba6f03"><div class="ttname"><a href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a></div><div class="ttdeci">#define ip_2_ip4(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:120</div></div>
<div class="ttc" id="group__ip6addr_html_ga9bac7e938757f1d24df2404e8b57cb7d"><div class="ttname"><a href="group__ip6addr.html#ga9bac7e938757f1d24df2404e8b57cb7d">IP_IS_V6</a></div><div class="ttdeci">#define IP_IS_V6(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:102</div></div>
<div class="ttc" id="structnetif_html"><div class="ttname"><a href="structnetif.html">netif</a></div><div class="ttdef"><b>Definition:</b> netif.h:260</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ga33bc079baaf513a9a7381b9531a1f653"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga33bc079baaf513a9a7381b9531a1f653">&#9670;&nbsp;</a></span>ip_addr_islinklocal</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ip_addr_islinklocal</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">ipaddr</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">((<a class="code" href="group__ip6addr.html#ga9bac7e938757f1d24df2404e8b57cb7d">IP_IS_V6</a>(ipaddr)) ? \</div><div class="line">  ip6_addr_islinklocal(<a class="code" href="group__ip6addr.html#ga06e75bcd198012b5ba39480c233608bd">ip_2_ip6</a>(ipaddr)) : \</div><div class="line">  ip4_addr_islinklocal(<a class="code" href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a>(ipaddr)))</div><div class="ttc" id="group__ip4addr_html_gad7268a496b7e3f872efecd859eba6f03"><div class="ttname"><a href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a></div><div class="ttdeci">#define ip_2_ip4(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:120</div></div>
<div class="ttc" id="group__ip6addr_html_ga9bac7e938757f1d24df2404e8b57cb7d"><div class="ttname"><a href="group__ip6addr.html#ga9bac7e938757f1d24df2404e8b57cb7d">IP_IS_V6</a></div><div class="ttdeci">#define IP_IS_V6(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:102</div></div>
<div class="ttc" id="group__ip6addr_html_ga06e75bcd198012b5ba39480c233608bd"><div class="ttname"><a href="group__ip6addr.html#ga06e75bcd198012b5ba39480c233608bd">ip_2_ip6</a></div><div class="ttdeci">#define ip_2_ip6(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:116</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ga0fc8bf6662809274750868683b3a422e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga0fc8bf6662809274750868683b3a422e">&#9670;&nbsp;</a></span>ip_addr_isloopback</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ip_addr_isloopback</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">ipaddr</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">((<a class="code" href="group__ip6addr.html#ga9bac7e938757f1d24df2404e8b57cb7d">IP_IS_V6</a>(ipaddr)) ? \</div><div class="line">  ip6_addr_isloopback(<a class="code" href="group__ip6addr.html#ga06e75bcd198012b5ba39480c233608bd">ip_2_ip6</a>(ipaddr)) : \</div><div class="line">  <a class="code" href="ip4__addr_8h.html#a46dabb4df212d156004fa5afe03e2051">ip4_addr_isloopback</a>(<a class="code" href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a>(ipaddr)))</div><div class="ttc" id="ip4__addr_8h_html_a46dabb4df212d156004fa5afe03e2051"><div class="ttname"><a href="ip4__addr_8h.html#a46dabb4df212d156004fa5afe03e2051">ip4_addr_isloopback</a></div><div class="ttdeci">#define ip4_addr_isloopback(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip4_addr.h:119</div></div>
<div class="ttc" id="group__ip4addr_html_gad7268a496b7e3f872efecd859eba6f03"><div class="ttname"><a href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a></div><div class="ttdeci">#define ip_2_ip4(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:120</div></div>
<div class="ttc" id="group__ip6addr_html_ga9bac7e938757f1d24df2404e8b57cb7d"><div class="ttname"><a href="group__ip6addr.html#ga9bac7e938757f1d24df2404e8b57cb7d">IP_IS_V6</a></div><div class="ttdeci">#define IP_IS_V6(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:102</div></div>
<div class="ttc" id="group__ip6addr_html_ga06e75bcd198012b5ba39480c233608bd"><div class="ttname"><a href="group__ip6addr.html#ga06e75bcd198012b5ba39480c233608bd">ip_2_ip6</a></div><div class="ttdeci">#define ip_2_ip6(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:116</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ga2170d3ee13dd22722222228e7b1c5752"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga2170d3ee13dd22722222228e7b1c5752">&#9670;&nbsp;</a></span>ip_addr_ismulticast</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ip_addr_ismulticast</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">ipaddr</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">((<a class="code" href="group__ip6addr.html#ga9bac7e938757f1d24df2404e8b57cb7d">IP_IS_V6</a>(ipaddr)) ? \</div><div class="line">  ip6_addr_ismulticast(<a class="code" href="group__ip6addr.html#ga06e75bcd198012b5ba39480c233608bd">ip_2_ip6</a>(ipaddr)) : \</div><div class="line">  ip4_addr_ismulticast(<a class="code" href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a>(ipaddr)))</div><div class="ttc" id="group__ip4addr_html_gad7268a496b7e3f872efecd859eba6f03"><div class="ttname"><a href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a></div><div class="ttdeci">#define ip_2_ip4(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:120</div></div>
<div class="ttc" id="group__ip6addr_html_ga9bac7e938757f1d24df2404e8b57cb7d"><div class="ttname"><a href="group__ip6addr.html#ga9bac7e938757f1d24df2404e8b57cb7d">IP_IS_V6</a></div><div class="ttdeci">#define IP_IS_V6(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:102</div></div>
<div class="ttc" id="group__ip6addr_html_ga06e75bcd198012b5ba39480c233608bd"><div class="ttname"><a href="group__ip6addr.html#ga06e75bcd198012b5ba39480c233608bd">ip_2_ip6</a></div><div class="ttdeci">#define ip_2_ip6(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:116</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ga3a2123f0bbf6fe843c8542e349c680eb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga3a2123f0bbf6fe843c8542e349c680eb">&#9670;&nbsp;</a></span>ip_addr_netcmp</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ip_addr_netcmp</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">addr1, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">addr2, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">mask&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">((<a class="code" href="group__ip6addr.html#ga9bac7e938757f1d24df2404e8b57cb7d">IP_IS_V6</a>(addr1) &amp;&amp; <a class="code" href="group__ip6addr.html#ga9bac7e938757f1d24df2404e8b57cb7d">IP_IS_V6</a>(addr2)) ? \</div><div class="line">  0 : \</div><div class="line">  <a class="code" href="ip4__addr_8h.html#afd43f6ceb2df8d50c84509ad1059f514">ip4_addr_netcmp</a>(<a class="code" href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a>(addr1), <a class="code" href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a>(addr2), mask))</div><div class="ttc" id="group__ip4addr_html_gad7268a496b7e3f872efecd859eba6f03"><div class="ttname"><a href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a></div><div class="ttdeci">#define ip_2_ip4(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:120</div></div>
<div class="ttc" id="group__ip6addr_html_ga9bac7e938757f1d24df2404e8b57cb7d"><div class="ttname"><a href="group__ip6addr.html#ga9bac7e938757f1d24df2404e8b57cb7d">IP_IS_V6</a></div><div class="ttdeci">#define IP_IS_V6(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:102</div></div>
<div class="ttc" id="ip4__addr_8h_html_afd43f6ceb2df8d50c84509ad1059f514"><div class="ttname"><a href="ip4__addr_8h.html#afd43f6ceb2df8d50c84509ad1059f514">ip4_addr_netcmp</a></div><div class="ttdeci">#define ip4_addr_netcmp(addr1, addr2, mask)</div><div class="ttdef"><b>Definition:</b> ip4_addr.h:141</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ga40db7feae2b92f7a7a01d65a85b06e18"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga40db7feae2b92f7a7a01d65a85b06e18">&#9670;&nbsp;</a></span>ip_addr_set</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ip_addr_set</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">dest, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">src&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">do</span>{ IP_SET_TYPE(dest, IP_GET_TYPE(src)); <span class="keywordflow">if</span>(<a class="code" href="group__ip6addr.html#ga9bac7e938757f1d24df2404e8b57cb7d">IP_IS_V6</a>(src)){ \</div><div class="line">  ip6_addr_set(<a class="code" href="group__ip6addr.html#ga06e75bcd198012b5ba39480c233608bd">ip_2_ip6</a>(dest), <a class="code" href="group__ip6addr.html#ga06e75bcd198012b5ba39480c233608bd">ip_2_ip6</a>(src)); }<span class="keywordflow">else</span>{ \</div><div class="line">  ip4_addr_set(<a class="code" href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a>(dest), <a class="code" href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a>(src)); ip_clear_no4(dest); }}<span class="keywordflow">while</span>(0)</div><div class="ttc" id="group__ip4addr_html_gad7268a496b7e3f872efecd859eba6f03"><div class="ttname"><a href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a></div><div class="ttdeci">#define ip_2_ip4(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:120</div></div>
<div class="ttc" id="group__ip6addr_html_ga9bac7e938757f1d24df2404e8b57cb7d"><div class="ttname"><a href="group__ip6addr.html#ga9bac7e938757f1d24df2404e8b57cb7d">IP_IS_V6</a></div><div class="ttdeci">#define IP_IS_V6(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:102</div></div>
<div class="ttc" id="group__ip6addr_html_ga06e75bcd198012b5ba39480c233608bd"><div class="ttname"><a href="group__ip6addr.html#ga06e75bcd198012b5ba39480c233608bd">ip_2_ip6</a></div><div class="ttdeci">#define ip_2_ip6(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:116</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ga8853fce54b1816dca3af90b48677e673"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8853fce54b1816dca3af90b48677e673">&#9670;&nbsp;</a></span>ip_addr_set_any</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ip_addr_set_any</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">is_ipv6, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">ipaddr&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">do</span>{<span class="keywordflow">if</span>(is_ipv6){ \</div><div class="line">  ip6_addr_set_any(<a class="code" href="group__ip6addr.html#ga06e75bcd198012b5ba39480c233608bd">ip_2_ip6</a>(ipaddr)); IP_SET_TYPE(ipaddr, <a class="code" href="group__ipaddr.html#ggaf2142f0dfdcc938e2db16aa745ed585caae510fd8ec7fe405b594b57af61f9a02">IPADDR_TYPE_V6</a>); }<span class="keywordflow">else</span>{ \</div><div class="line">  ip4_addr_set_any(<a class="code" href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a>(ipaddr)); IP_SET_TYPE(ipaddr, <a class="code" href="group__ipaddr.html#ggaf2142f0dfdcc938e2db16aa745ed585cace47fa82608deeb1c1c7c2c891eb5049">IPADDR_TYPE_V4</a>); ip_clear_no4(ipaddr); }}<span class="keywordflow">while</span>(0)</div><div class="ttc" id="group__ip4addr_html_gad7268a496b7e3f872efecd859eba6f03"><div class="ttname"><a href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a></div><div class="ttdeci">#define ip_2_ip4(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:120</div></div>
<div class="ttc" id="group__ipaddr_html_ggaf2142f0dfdcc938e2db16aa745ed585caae510fd8ec7fe405b594b57af61f9a02"><div class="ttname"><a href="group__ipaddr.html#ggaf2142f0dfdcc938e2db16aa745ed585caae510fd8ec7fe405b594b57af61f9a02">IPADDR_TYPE_V6</a></div><div class="ttdef"><b>Definition:</b> ip_addr.h:58</div></div>
<div class="ttc" id="group__ipaddr_html_ggaf2142f0dfdcc938e2db16aa745ed585cace47fa82608deeb1c1c7c2c891eb5049"><div class="ttname"><a href="group__ipaddr.html#ggaf2142f0dfdcc938e2db16aa745ed585cace47fa82608deeb1c1c7c2c891eb5049">IPADDR_TYPE_V4</a></div><div class="ttdef"><b>Definition:</b> ip_addr.h:56</div></div>
<div class="ttc" id="group__ip6addr_html_ga06e75bcd198012b5ba39480c233608bd"><div class="ttname"><a href="group__ip6addr.html#ga06e75bcd198012b5ba39480c233608bd">ip_2_ip6</a></div><div class="ttdeci">#define ip_2_ip6(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:116</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ga93c7bf3f7487495472aa0f9b5fc25d1a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga93c7bf3f7487495472aa0f9b5fc25d1a">&#9670;&nbsp;</a></span>ip_addr_set_any_val</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ip_addr_set_any_val</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">is_ipv6, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">ipaddr&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">do</span>{<span class="keywordflow">if</span>(is_ipv6){ \</div><div class="line">  ip6_addr_set_any(<a class="code" href="group__ip6addr.html#ga06e75bcd198012b5ba39480c233608bd">ip_2_ip6</a>(&amp;(ipaddr))); IP_SET_TYPE_VAL(ipaddr, <a class="code" href="group__ipaddr.html#ggaf2142f0dfdcc938e2db16aa745ed585caae510fd8ec7fe405b594b57af61f9a02">IPADDR_TYPE_V6</a>); }<span class="keywordflow">else</span>{ \</div><div class="line">  ip4_addr_set_any(<a class="code" href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a>(&amp;(ipaddr))); IP_SET_TYPE_VAL(ipaddr, <a class="code" href="group__ipaddr.html#ggaf2142f0dfdcc938e2db16aa745ed585cace47fa82608deeb1c1c7c2c891eb5049">IPADDR_TYPE_V4</a>); ip_clear_no4(&amp;ipaddr); }}<span class="keywordflow">while</span>(0)</div><div class="ttc" id="group__ip4addr_html_gad7268a496b7e3f872efecd859eba6f03"><div class="ttname"><a href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a></div><div class="ttdeci">#define ip_2_ip4(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:120</div></div>
<div class="ttc" id="group__ipaddr_html_ggaf2142f0dfdcc938e2db16aa745ed585caae510fd8ec7fe405b594b57af61f9a02"><div class="ttname"><a href="group__ipaddr.html#ggaf2142f0dfdcc938e2db16aa745ed585caae510fd8ec7fe405b594b57af61f9a02">IPADDR_TYPE_V6</a></div><div class="ttdef"><b>Definition:</b> ip_addr.h:58</div></div>
<div class="ttc" id="group__ipaddr_html_ggaf2142f0dfdcc938e2db16aa745ed585cace47fa82608deeb1c1c7c2c891eb5049"><div class="ttname"><a href="group__ipaddr.html#ggaf2142f0dfdcc938e2db16aa745ed585cace47fa82608deeb1c1c7c2c891eb5049">IPADDR_TYPE_V4</a></div><div class="ttdef"><b>Definition:</b> ip_addr.h:56</div></div>
<div class="ttc" id="group__ip6addr_html_ga06e75bcd198012b5ba39480c233608bd"><div class="ttname"><a href="group__ip6addr.html#ga06e75bcd198012b5ba39480c233608bd">ip_2_ip6</a></div><div class="ttdeci">#define ip_2_ip6(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:116</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ga3528798be1d2f1ec6a6bccd35694edce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga3528798be1d2f1ec6a6bccd35694edce">&#9670;&nbsp;</a></span>ip_addr_set_hton</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ip_addr_set_hton</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">dest, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">src&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">do</span>{<span class="keywordflow">if</span>(<a class="code" href="group__ip6addr.html#ga9bac7e938757f1d24df2404e8b57cb7d">IP_IS_V6</a>(src)){ \</div><div class="line">  ip6_addr_set_hton(<a class="code" href="group__ip6addr.html#ga06e75bcd198012b5ba39480c233608bd">ip_2_ip6</a>(dest), <a class="code" href="group__ip6addr.html#ga06e75bcd198012b5ba39480c233608bd">ip_2_ip6</a>(src)); IP_SET_TYPE(dest, <a class="code" href="group__ipaddr.html#ggaf2142f0dfdcc938e2db16aa745ed585caae510fd8ec7fe405b594b57af61f9a02">IPADDR_TYPE_V6</a>); }<span class="keywordflow">else</span>{ \</div><div class="line">  ip4_addr_set_hton(<a class="code" href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a>(dest), <a class="code" href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a>(src)); IP_SET_TYPE(dest, <a class="code" href="group__ipaddr.html#ggaf2142f0dfdcc938e2db16aa745ed585cace47fa82608deeb1c1c7c2c891eb5049">IPADDR_TYPE_V4</a>); ip_clear_no4(ipaddr); }}<span class="keywordflow">while</span>(0)</div><div class="ttc" id="group__ip4addr_html_gad7268a496b7e3f872efecd859eba6f03"><div class="ttname"><a href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a></div><div class="ttdeci">#define ip_2_ip4(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:120</div></div>
<div class="ttc" id="group__ipaddr_html_ggaf2142f0dfdcc938e2db16aa745ed585caae510fd8ec7fe405b594b57af61f9a02"><div class="ttname"><a href="group__ipaddr.html#ggaf2142f0dfdcc938e2db16aa745ed585caae510fd8ec7fe405b594b57af61f9a02">IPADDR_TYPE_V6</a></div><div class="ttdef"><b>Definition:</b> ip_addr.h:58</div></div>
<div class="ttc" id="group__ip6addr_html_ga9bac7e938757f1d24df2404e8b57cb7d"><div class="ttname"><a href="group__ip6addr.html#ga9bac7e938757f1d24df2404e8b57cb7d">IP_IS_V6</a></div><div class="ttdeci">#define IP_IS_V6(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:102</div></div>
<div class="ttc" id="group__ipaddr_html_ggaf2142f0dfdcc938e2db16aa745ed585cace47fa82608deeb1c1c7c2c891eb5049"><div class="ttname"><a href="group__ipaddr.html#ggaf2142f0dfdcc938e2db16aa745ed585cace47fa82608deeb1c1c7c2c891eb5049">IPADDR_TYPE_V4</a></div><div class="ttdef"><b>Definition:</b> ip_addr.h:56</div></div>
<div class="ttc" id="group__ip6addr_html_ga06e75bcd198012b5ba39480c233608bd"><div class="ttname"><a href="group__ip6addr.html#ga06e75bcd198012b5ba39480c233608bd">ip_2_ip6</a></div><div class="ttdeci">#define ip_2_ip6(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:116</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="gaea5e4795598bc33fa2db1773c8e6fbac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaea5e4795598bc33fa2db1773c8e6fbac">&#9670;&nbsp;</a></span>ip_addr_set_ipaddr</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ip_addr_set_ipaddr</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">dest, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">src&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;<a class="el" href="group__ipaddr.html#ga40db7feae2b92f7a7a01d65a85b06e18">ip_addr_set</a>(dest, src)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ga8f9d56ac85cd87338a1823e4a58ba1da"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8f9d56ac85cd87338a1823e4a58ba1da">&#9670;&nbsp;</a></span>ip_addr_set_loopback</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ip_addr_set_loopback</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">is_ipv6, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">ipaddr&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">do</span>{<span class="keywordflow">if</span>(is_ipv6){ \</div><div class="line">  ip6_addr_set_loopback(<a class="code" href="group__ip6addr.html#ga06e75bcd198012b5ba39480c233608bd">ip_2_ip6</a>(ipaddr)); IP_SET_TYPE(ipaddr, <a class="code" href="group__ipaddr.html#ggaf2142f0dfdcc938e2db16aa745ed585caae510fd8ec7fe405b594b57af61f9a02">IPADDR_TYPE_V6</a>); }<span class="keywordflow">else</span>{ \</div><div class="line">  ip4_addr_set_loopback(<a class="code" href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a>(ipaddr)); IP_SET_TYPE(ipaddr, <a class="code" href="group__ipaddr.html#ggaf2142f0dfdcc938e2db16aa745ed585cace47fa82608deeb1c1c7c2c891eb5049">IPADDR_TYPE_V4</a>); ip_clear_no4(ipaddr); }}<span class="keywordflow">while</span>(0)</div><div class="ttc" id="group__ip4addr_html_gad7268a496b7e3f872efecd859eba6f03"><div class="ttname"><a href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a></div><div class="ttdeci">#define ip_2_ip4(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:120</div></div>
<div class="ttc" id="group__ipaddr_html_ggaf2142f0dfdcc938e2db16aa745ed585caae510fd8ec7fe405b594b57af61f9a02"><div class="ttname"><a href="group__ipaddr.html#ggaf2142f0dfdcc938e2db16aa745ed585caae510fd8ec7fe405b594b57af61f9a02">IPADDR_TYPE_V6</a></div><div class="ttdef"><b>Definition:</b> ip_addr.h:58</div></div>
<div class="ttc" id="group__ipaddr_html_ggaf2142f0dfdcc938e2db16aa745ed585cace47fa82608deeb1c1c7c2c891eb5049"><div class="ttname"><a href="group__ipaddr.html#ggaf2142f0dfdcc938e2db16aa745ed585cace47fa82608deeb1c1c7c2c891eb5049">IPADDR_TYPE_V4</a></div><div class="ttdef"><b>Definition:</b> ip_addr.h:56</div></div>
<div class="ttc" id="group__ip6addr_html_ga06e75bcd198012b5ba39480c233608bd"><div class="ttname"><a href="group__ip6addr.html#ga06e75bcd198012b5ba39480c233608bd">ip_2_ip6</a></div><div class="ttdeci">#define ip_2_ip6(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:116</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="gac1c5f897bbee217771b1a6ba18733042"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac1c5f897bbee217771b1a6ba18733042">&#9670;&nbsp;</a></span>ip_addr_set_loopback_val</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ip_addr_set_loopback_val</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">is_ipv6, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">ipaddr&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">do</span>{<span class="keywordflow">if</span>(is_ipv6){ \</div><div class="line">  ip6_addr_set_loopback(<a class="code" href="group__ip6addr.html#ga06e75bcd198012b5ba39480c233608bd">ip_2_ip6</a>(&amp;(ipaddr))); IP_SET_TYPE_VAL(ipaddr, <a class="code" href="group__ipaddr.html#ggaf2142f0dfdcc938e2db16aa745ed585caae510fd8ec7fe405b594b57af61f9a02">IPADDR_TYPE_V6</a>); }<span class="keywordflow">else</span>{ \</div><div class="line">  ip4_addr_set_loopback(<a class="code" href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a>(&amp;(ipaddr))); IP_SET_TYPE_VAL(ipaddr, <a class="code" href="group__ipaddr.html#ggaf2142f0dfdcc938e2db16aa745ed585cace47fa82608deeb1c1c7c2c891eb5049">IPADDR_TYPE_V4</a>); ip_clear_no4(&amp;ipaddr); }}<span class="keywordflow">while</span>(0)</div><div class="ttc" id="group__ip4addr_html_gad7268a496b7e3f872efecd859eba6f03"><div class="ttname"><a href="group__ip4addr.html#gad7268a496b7e3f872efecd859eba6f03">ip_2_ip4</a></div><div class="ttdeci">#define ip_2_ip4(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:120</div></div>
<div class="ttc" id="group__ipaddr_html_ggaf2142f0dfdcc938e2db16aa745ed585caae510fd8ec7fe405b594b57af61f9a02"><div class="ttname"><a href="group__ipaddr.html#ggaf2142f0dfdcc938e2db16aa745ed585caae510fd8ec7fe405b594b57af61f9a02">IPADDR_TYPE_V6</a></div><div class="ttdef"><b>Definition:</b> ip_addr.h:58</div></div>
<div class="ttc" id="group__ipaddr_html_ggaf2142f0dfdcc938e2db16aa745ed585cace47fa82608deeb1c1c7c2c891eb5049"><div class="ttname"><a href="group__ipaddr.html#ggaf2142f0dfdcc938e2db16aa745ed585cace47fa82608deeb1c1c7c2c891eb5049">IPADDR_TYPE_V4</a></div><div class="ttdef"><b>Definition:</b> ip_addr.h:56</div></div>
<div class="ttc" id="group__ip6addr_html_ga06e75bcd198012b5ba39480c233608bd"><div class="ttname"><a href="group__ip6addr.html#ga06e75bcd198012b5ba39480c233608bd">ip_2_ip6</a></div><div class="ttdeci">#define ip_2_ip6(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:116</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="gaae7edb585c062ae03bfbd3af7bf671bc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaae7edb585c062ae03bfbd3af7bf671bc">&#9670;&nbsp;</a></span>ip_addr_set_zero</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ip_addr_set_zero</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">ipaddr</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">do</span>{ \</div><div class="line">  ip6_addr_set_zero(<a class="code" href="group__ip6addr.html#ga06e75bcd198012b5ba39480c233608bd">ip_2_ip6</a>(ipaddr)); IP_SET_TYPE(ipaddr, 0); }<span class="keywordflow">while</span>(0)</div><div class="ttc" id="group__ip6addr_html_ga06e75bcd198012b5ba39480c233608bd"><div class="ttname"><a href="group__ip6addr.html#ga06e75bcd198012b5ba39480c233608bd">ip_2_ip6</a></div><div class="ttdeci">#define ip_2_ip6(ipaddr)</div><div class="ttdef"><b>Definition:</b> ip_addr.h:116</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="gabe43b154533b73585c4e58f568370ede"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gabe43b154533b73585c4e58f568370ede">&#9670;&nbsp;</a></span>IP_ANY_TYPE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define IP_ANY_TYPE&#160;&#160;&#160;(&amp;ip_addr_any_type)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ga83b17dbf7d1faf5c8f8c20b039db8bb8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga83b17dbf7d1faf5c8f8c20b039db8bb8">&#9670;&nbsp;</a></span>IP_IS_ANY_TYPE_VAL</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define IP_IS_ANY_TYPE_VAL</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">ipaddr</td><td>)</td>
          <td>&#160;&#160;&#160;(IP_GET_TYPE(&amp;ipaddr) == <a class="el" href="group__ipaddr.html#ggaf2142f0dfdcc938e2db16aa745ed585cac6b2c99cf920e08efcb55dc40e42944e">IPADDR_TYPE_ANY</a>)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ga23b580930c0eb1d0fdeba2b109c077a5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga23b580930c0eb1d0fdeba2b109c077a5">&#9670;&nbsp;</a></span>IPADDR_ANY_TYPE_INIT</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define IPADDR_ANY_TYPE_INIT&#160;&#160;&#160;{ { { { 0ul, 0ul, 0ul, 0ul } IPADDR6_ZONE_INIT } }, IPADDR_TYPE_ANY }</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ga8619278bcbf705844f584f36972fc758"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8619278bcbf705844f584f36972fc758">&#9670;&nbsp;</a></span>IPADDR_STRLEN_MAX</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define IPADDR_STRLEN_MAX&#160;&#160;&#160;IP6ADDR_STRLEN_MAX</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ga66b5a64b12128e3716bcf04ff91b5a57"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga66b5a64b12128e3716bcf04ff91b5a57">&#9670;&nbsp;</a></span>unmap_ipv4_mapped_ipv6</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define unmap_ipv4_mapped_ipv6</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">ip4addr, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">ip6addr&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;(ip4addr)-&gt;addr = (ip6addr)-&gt;addr[3];</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<h2 class="groupheader">Typedef Documentation</h2>
<a id="ga16ef96d6cde029029bbf47fee35fd67a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga16ef96d6cde029029bbf47fee35fd67a">&#9670;&nbsp;</a></span>ip_addr_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="structip__addr.html">ip_addr</a>  <a class="el" href="group__ipaddr.html#ga16ef96d6cde029029bbf47fee35fd67a">ip_addr_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>A union struct for both IP version's addresses. ATTENTION: watch out for its size when adding IPv6 address scope! </p>

</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a id="gaf2142f0dfdcc938e2db16aa745ed585c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf2142f0dfdcc938e2db16aa745ed585c">&#9670;&nbsp;</a></span>lwip_ip_addr_type</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group__ipaddr.html#gaf2142f0dfdcc938e2db16aa745ed585c">lwip_ip_addr_type</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>IP address types for use in <a class="el" href="structip__addr.html#a66eaa8e9051e7102bf9f0c195fbe555a">ip_addr_t.type</a> member. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="group__tcp__raw.html#gac14e757a21a4a87c6aa52372c210b937">tcp_new_ip_type()</a>, <a class="el" href="group__udp__raw.html#gaf1ab236050dd351e93f112cfbc1ada88">udp_new_ip_type()</a>, <a class="el" href="group__raw__raw.html#ga3292b7ed2271ac29983edcef16dcbc11">raw_new_ip_type()</a>. </dd></dl>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ggaf2142f0dfdcc938e2db16aa745ed585cace47fa82608deeb1c1c7c2c891eb5049"></a>IPADDR_TYPE_V4&#160;</td><td class="fielddoc"><p>IPv4 </p>
</td></tr>
<tr><td class="fieldname"><a id="ggaf2142f0dfdcc938e2db16aa745ed585caae510fd8ec7fe405b594b57af61f9a02"></a>IPADDR_TYPE_V6&#160;</td><td class="fielddoc"><p>IPv6 </p>
</td></tr>
<tr><td class="fieldname"><a id="ggaf2142f0dfdcc938e2db16aa745ed585cac6b2c99cf920e08efcb55dc40e42944e"></a>IPADDR_TYPE_ANY&#160;</td><td class="fielddoc"><p>IPv4+IPv6 ("dual-stack") </p>
</td></tr>
</table>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="ga4de70fdd7fd36c5b6eaed8b855d5f151"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga4de70fdd7fd36c5b6eaed8b855d5f151">&#9670;&nbsp;</a></span>ipaddr_aton()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ipaddr_aton </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>cp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__ipaddr.html#ga16ef96d6cde029029bbf47fee35fd67a">ip_addr_t</a> *&#160;</td>
          <td class="paramname"><em>addr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Convert IP address string (both versions) to numeric. The version is auto-detected from the string.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">cp</td><td>IP address string to convert </td></tr>
    <tr><td class="paramname">addr</td><td>conversion result is stored here </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>1 on success, 0 on error </dd></dl>

</div>
</div>
<a id="gace12d28aef35bb15962e8563aea571b1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gace12d28aef35bb15962e8563aea571b1">&#9670;&nbsp;</a></span>ipaddr_ntoa()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* ipaddr_ntoa </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__ipaddr.html#ga16ef96d6cde029029bbf47fee35fd67a">ip_addr_t</a> *&#160;</td>
          <td class="paramname"><em>addr</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Convert numeric IP address (both versions) into ASCII representation. returns ptr to static buffer; not reentrant!</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">addr</td><td>ip address in network order to convert </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>pointer to a global static (!) buffer that holds the ASCII representation of addr </dd></dl>

</div>
</div>
<a id="ga3684dabc0cae597ffb5b51d41f1d886f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga3684dabc0cae597ffb5b51d41f1d886f">&#9670;&nbsp;</a></span>ipaddr_ntoa_r()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* ipaddr_ntoa_r </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__ipaddr.html#ga16ef96d6cde029029bbf47fee35fd67a">ip_addr_t</a> *&#160;</td>
          <td class="paramname"><em>addr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>buflen</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Same as ipaddr_ntoa, but reentrant since a user-supplied buffer is used.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">addr</td><td>ip address in network order to convert </td></tr>
    <tr><td class="paramname">buf</td><td>target buffer where the string is stored </td></tr>
    <tr><td class="paramname">buflen</td><td>length of buf </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>either pointer to buf which now holds the ASCII representation of addr or NULL if buf was too small </dd></dl>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
  </ul>
</div>
</body>
</html>
